package com.fypg.framework.common.util.json.databind;

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;

import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

import static com.fypg.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

/**
 * 自定义 LocalDateTime 序列化器
 * 用于将 LocalDateTime 格式化为 "yyyy-MM-dd HH:mm:ss" 格式的字符串。
 * 这个类专门用来通过 @JsonSerialize 注解覆盖全局的时间戳序列化规则。
 * 使用：@JsonSerialize(using = StringLocalDateTimeSerializer.class)
 */
public class StringLocalDateTimeSerializer extends JsonSerializer<LocalDateTime> {

    private static final DateTimeFormatter FORMATTER =
        DateTimeFormatter.ofPattern(FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND);

    @Override
    public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider serializers)
        throws IOException {
        if (value != null) {
            gen.writeString(value.format(FORMATTER));
        }
    }
}